import BaseService from '@/utils/base/service';
import makeRequest, { uploadFile } from '@/utils/request/request';
import { LoginUserModel } from '../model';

export default class MineService extends BaseService {
	constructor() {
		super('/unapp/user');  // 设置基础路径和缓存键
	}

	/**
	 * 获取用户信息
	 * @returns Promise<LoginUserData>
	 */
	async getUserInfo() : Promise<LoginUserModel> {
		try {
			const response = await makeRequest({
				url: `${this.endpoint}/info`,
				method: 'GET',
				hideLoading: true,
			});
			return response.data;
		} catch (error) {
			console.error('获取用户信息失败:', error);
			throw new Error('用户信息获取失败，请重试');
		}
	}

	/**
	 * 上传头像方法
	 * @param filePath 头像文件路径
	 * @returns Promise<string> 返回上传成功后的头像 URL
	 */
	async uploadAvatar(filePath : string) : Promise<string> {
		try {
			// 调用 uploadFile 函数并传入文件路径
			const url = await uploadFile(filePath);
			return url;
		} catch (error) {
			console.error('头像上传失败:', error);
			throw new Error('头像上传失败，请重试');
		}
	}

	/**
	 * 修改用户密码
	 * @param newPassword 新密码
	 * @returns Promise<void>
	 */
	async updatePassword(newPassword : string) : Promise<void> {
		try {
			await makeRequest({
				url: `${this.endpoint}/password`,
				method: 'PUT',
				data: { newPassword },
			});
			console.log('密码修改成功');
		} catch (error) {
			console.error('修改密码失败:', error);
			throw new Error('密码修改失败，请重试');
		}
	}
}